group { name: "elm/progressbar/horizontal/default";
#define ICON    1
#define LABEL   2
#define DISABLE 4
   script {
      public slmode;
      public eval_mode(m) {
         new ic = m & ICON;
         new l = m & LABEL;
         new d = m & DISABLE;
         if (l) {
            if (!d) {
               set_state(PART:"elm.text", "visible", 0.0);
            } else {
               set_state(PART:"elm.text", "disabled_visible", 0.0);
            }
         } else {
            set_state(PART:"elm.text", "default", 0.0);
         }
         if (ic) {
            set_state(PART:"elm.swallow.content", "visible", 0.0);
            set_state(PART:"bg", "iclabel", 0.0);
         } else {
            set_state(PART:"elm.swallow.content", "default", 0.0);
            if (l) {
              set_state(PART:"bg", "iclabel", 0.0);
            }
            else {
              set_state(PART:"bg", "default", 0.0);
            }
         }
         if (!d) {
            set_state(PART:"dis_clip", "default", 0.0);
         } else {
            set_state(PART:"dis_clip", "disabled", 0.0);
         }
      }
   }
   parts {
      part { name: "dis_clip"; type: RECT;
         description { state: "default" 0.0;
            rel.to: "elm.swallow.content";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 64; // no cc
         }
      }
      part { name: "pulse_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
            visible: 0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "fract_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      part { name: "elm.swallow.content"; type: SWALLOW;
         scale: 1;
         clip_to: "dis_clip";
         description { state: "default" 0.0;
            visible: 0;
            align: 0.0 0.5;
            fixed: 1 0;
            rel1.offset: -1 4;
            rel2.offset: -1 -5;
            rel2.relative: 0.0 1.0;
            offscale;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
            visible: 1;
//            aspect: 1.0 1.0; aspect_preference: VERTICAL;
            rel1.offset: 4 4;
            rel2.offset: 4 -5;
            min: ICMIN ICMIN;
         }
      }
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            align: 0.0 0.5;
            rel1.to_x: "elm.swallow.content";
            rel1.relative: 1.0 0.0;
            rel1.offset: -1 4;
            rel2.to_x: "elm.swallow.content";
            rel2.relative: 1.0 1.0;
            rel2.offset: -1 -5;
            color_class: "/fg/normal/progress/text";
            text { font: FN; size: 10;
               text_class: "progressbar";
               min: 0 0;
               align: 0.0 0.5;
            }
            visible: 0;
            offscale;
            min: 0 ICMIN;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
            fixed: 1 0;
            visible: 1;
            rel1.offset: 4 4;
            rel2.offset: 4 -5;
            text.min: 1 1;
            text.ellipsis: -1;
         }
         description { state: "disabled_visible" 0.0;
            inherit: "visible" 0.0;
            color_class: "/fg/disabled/progress/text";
         }
      }
      part { name: "bg"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            min: 16 16;
            max: -1 16;
            rel1.offset: 4 4;
            rel2.offset: -5 -5;
            color_class: "/bg/normal/progress/base";
            offscale;
         }
         description { state: "iclabel" 0.0;
            inherit: "default" 0.0;
            rel1.to_x: "elm.text";
            rel1.relative: 1.0 0.0;
         }
      }
      part { name: "elm.swallow.bar"; type: SWALLOW; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "bg";
         }
      }
      part { name: "elm.cur.progressbar"; mouse_events: 0; type: SPACER;
         dragable.confine: "elm.swallow.bar";
         dragable.x: 1 1 1;
         dragable.y: 0 0 0;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 1 1;
            max: 1 9999;
            rel.to: "elm.swallow.bar";
         }
      }
      part { name: "barend"; type: SPACER;
         description { state: "default" 0.0;
            fixed: 1 0;
            max: 1 9999;
            rel1.to_x: "elm.cur.progressbar";
            rel2.to_x: "elm.cur.progressbar";
            align: 1.0 0.5;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            align: 0.0 0.5;
         }
      }
      part { name: "bar"; type: RECT;
         scale: 1;
         clip_to: "fract_clip";
         description { state: "default" 0.0;
            rel1.to: "bg";
            rel2.to_x: "barend";
            rel2.to_y: "bg";
            color_class: "/fg/normal/progress/bar";
            offscale;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            rel1.to_x: "barend";
            rel2.to_x: "bg";
         }
      }
      part { name: "pulse"; type: RECT;
         clip_to: "pulse_clip";
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 16 8;
            max: 16 9999;
            rel.to: "elm.swallow.bar";
            align: 0.0 0.5;
            color_class: "/fg/normal/progress/pulse";
         }
         description { state: "end" 0.0;
            inherit: "default" 0.0;
            align: 1.0 0.5;
         }
      }
      part { name: "elm.text.status"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            rel.to: "elm.swallow.bar";
            rel1.offset: 4 0;
            rel2.offset: -5 -1;
            align: 1.0 0.5;
            text { font: FN; size: 10;
               min: 0 1;
               text_class: "progress_status";
               align: 1.0 0.5;
            }
            color_class: "/fg/normal/progress/text/status";
            offscale;
         }
         description { state: "hidden" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
   }
   programs {
      program { name: "inverted-on";
         signal: "elm,state,inverted,on"; source: "elm";
         action:  STATE_SET "inv" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "inverted-off";
         signal: "elm,state,inverted,off"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "pulse-mode0";
         signal: "elm,state,pulse"; source: "elm";
         action:  STATE_SET "hidden" 0.0;
         target: "elm.text.status";
         after: "pulse-mode1";
      }
      program { name: "pulse-mode1";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "fract_clip";
      }
      program { name: "pulse-start";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "pulse_clip";
         target: "fract_clip";
         after: "pulse0";
      }
      program { name: "pulse0";
         action:  STATE_SET "end" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse1";
      }
      program { name: "pulse1";
         action:  STATE_SET "default" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse0";
      }
      program { name: "fraction";
         signal: "elm,state,fraction"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "elm.text.status";
         after: "pulse-stop";
      }
      program { name: "elmpulse-stop";
         signal: "elm,state,pulse,stop"; source: "elm";
         action: ACTION_STOP;
         target: "pulse0";
         target: "pulse1";
         after: "pulse-stop";
      }
      program { name: "pulse-stop";
         action:  STATE_SET "default" 0.0;
         target: "pulse_clip";
      }
      program { name: "units-visible";
         signal: "elm,state,units,visible"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "elm.text.status";
      }
      program { name: "units-hidden";
         signal: "elm,state,units,hidden"; source: "elm";
         action:  STATE_SET "hidden" 0.0;
         target: "elm.text.status";
      }
      program { name: "text-visible";
         signal: "elm,state,text,visible"; source: "elm";
         script {
            new m = get_int(slmode);
            m |= LABEL; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "text-hidden";
         signal: "elm,state,text,hidden"; source: "elm";
         script {
            new m = get_int(slmode);
            m &= ~LABEL; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "icon-visible";
         signal: "elm,state,icon,visible"; source: "elm";
         script {
            new m = get_int(slmode);
            m |= ICON; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "icon-hidden";
         signal: "elm,state,icon,hidden"; source: "elm";
         script {
            new m = get_int(slmode);
            m &= ~ICON; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "state-disabled";
         signal: "elm,state,disabled"; source: "elm";
         script {
            new m = get_int(slmode);
            m |= DISABLE; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "state-enabled";
         signal: "elm,state,enabled"; source: "elm";
         script {
            new m = get_int(slmode);
            m &= ~DISABLE; set_int(slmode, m);
            eval_mode(m);
         }
      }
   }
#undef ICON
#undef LABEL
#undef DISABLE
}

group { name: "elm/progressbar/vertical/default";
#define ICON    1
#define LABEL   2
#define DISABLE 4
   script {
      public slmode;
      public eval_mode(m) {
         new ic = m & ICON;
         new l = m & LABEL;
         new d = m & DISABLE;
         if (l) {
            if (!d) {
               set_state(PART:"elm.text", "visible", 0.0);
            } else {
               set_state(PART:"elm.text", "disabled_visible", 0.0);
            }
         } else {
            set_state(PART:"elm.text", "default", 0.0);
         }
         if (ic) {
            set_state(PART:"elm.swallow.content", "visible", 0.0);
            set_state(PART:"bg", "iclabel", 0.0);
         } else {
            set_state(PART:"elm.swallow.content", "default", 0.0);
            if (l) {
               set_state(PART:"bg", "iclabel", 0.0);
            }
            else {
               set_state(PART:"bg", "default", 0.0);
            }
         }
         if (!d) {
            set_state(PART:"dis_clip", "default", 0.0);
         } else {
            set_state(PART:"dis_clip", "disabled", 0.0);
         }
      }
   }
   parts {
      part { name: "dis_clip"; type: RECT;
         description { state: "default" 0.0;
            rel.to: "elm.swallow.content";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 64; // no cc
         }
      }
      part { name: "pulse_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
            visible: 0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "fract_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      part { name: "elm.swallow.content"; type: SWALLOW;
         scale: 1;
         clip_to: "dis_clip";
         description { state: "default" 0.0;
            visible: 0;
            align: 0.5 0.0;
            fixed: 1 1;
            rel1.offset: 4 0;
            rel2.offset: -5 -1;
            rel2.relative: 1.0 0.0;
            offscale;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
            visible: 1;
//            aspect: 1.0 1.0; aspect_preference: HORIZONTAL;
            rel1.offset: 4 4;
            rel2.offset: -5 4;
            min: ICMIN ICMIN;
         }
      }
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            align: 0.5 0.0;
            rel1.to_y: "elm.swallow.content";
            rel1.relative: 0.0 1.0;
            rel1.offset: 4 -1;
            rel2.to_y: "elm.swallow.content";
            rel2.relative: 1.0 1.0;
            rel2.offset: -5 -1;
            color_class: "/fg/normal/progress/text";
            text { font: FN; size: 10;
               text_class: "progressbar";
               min: 0 0;
               align: 0.5 0.0;
            }
            visible: 0;
            offscale;
            min: 0 ICMIN;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
            visible: 1;
            rel1.offset: 4 4;
            rel2.offset: -5 4;
            text.min: 1 1;
            text.ellipsis: -1;
         }
         description { state: "disabled_visible" 0.0;
            inherit: "visible" 0.0;
            color_class: "/fg/disabled/progress/text";
         }
      }
      part { name: "bg"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            min: 16 16;
            max: 16 -1;
            rel1.offset: 4 4;
            rel2.offset: -5 -5;
            color_class: "/bg/normal/progress/base";
            offscale;
         }
         description { state: "iclabel" 0.0;
            inherit: "default" 0.0;
            rel1.to_y: "elm.text";
            rel1.relative: 0.0 1.0;
         }
      }
      part { name: "elm.swallow.bar"; type: SWALLOW; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "bg";
         }
      }
      part { name: "elm.cur.progressbar"; mouse_events: 0; type: SPACER;
         dragable.confine: "elm.swallow.bar";
         dragable.x: 0 0 0;
         dragable.y: 1 1 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 1 1;
            max: 9999 1;
            rel.to: "elm.swallow.bar";
         }
      }
      part { name: "barend"; type: SPACER;
         description { state: "default" 0.0;
            fixed: 0 1;
            max: 9999 1;
            rel1.to_y: "elm.cur.progressbar";
            rel2.to_y: "elm.cur.progressbar";
            align: 0.5 1.0;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            align: 0.5 0.0;
         }
      }
      part { name: "bar"; type: RECT;
         scale: 1;
         clip_to: "fract_clip";
         description { state: "default" 0.0;
            rel1.to: "bg";
            rel2.to_y: "barend";
            rel2.to_x: "bg";
            color_class: "/fg/normal/progress/bar";
            offscale;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            rel1.to_y: "barend";
            rel2.to_y: "bg";
         }
      }
      part { name: "pulse"; type: RECT;
         clip_to: "pulse_clip";
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 8 16;
            max: 9999 16;
            rel.to: "elm.swallow.bar";
            align: 0.5 0.0;
            color_class: "/fg/normal/progress/pulse";
         }
         description { state: "end" 0.0;
            inherit: "default" 0.0;
            align: 0.5 1.0;
         }
      }
      part { name: "statbox"; type: SPACER;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            rel.to: "bg";
            aspect: 1.0 1.0; aspect_preference: NONE;
         }
      }
      part { name: "elm.text.status"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            rel.to: "statbox";
            rel1.offset: 4 0;
            rel2.offset: -5 -1;
            align: 1.0 0.5;
            text { font: FN; size: 10;
               min: 0 1;
               text_class: "progress_status";
               align: 1.0 0.5;
            }
            map.on: 1;
            map.smooth: 0;
            map.rotation.center: "elm.swallow.bar";
            map.rotation.z: 90;
            color_class: "/fg/normal/progress/text/status";
            offscale;
         }
         description { state: "hidden" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
   }
   programs {
      program { name: "inverted-on";
         signal: "elm,state,inverted,on"; source: "elm";
         action:  STATE_SET "inv" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "inverted-off";
         signal: "elm,state,inverted,off"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "pulse-mode0";
         signal: "elm,state,pulse"; source: "elm";
         action:  STATE_SET "hidden" 0.0;
         target: "elm.text.status";
         after: "pulse-mode1";
      }
      program { name: "pulse-mode1";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "fract_clip";
      }
      program { name: "pulse-start";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "pulse_clip";
         target: "fract_clip";
         after: "pulse0";
      }
      program { name: "pulse0";
         action:  STATE_SET "end" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse1";
      }
      program { name: "pulse1";
         action:  STATE_SET "default" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse0";
      }
      program { name: "fraction";
         signal: "elm,state,fraction"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "elm.text.status";
         after: "pulse-stop";
      }
      program { name: "elmpulse-stop";
         signal: "elm,state,pulse,stop"; source: "elm";
         action: ACTION_STOP;
         target: "pulse0";
         target: "pulse1";
         after: "pulse-stop";
      }
      program { name: "pulse-stop";
         action:  STATE_SET "default" 0.0;
         target: "pulse_clip";
      }
      program { name: "units-visible";
         signal: "elm,state,units,visible"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "elm.text.status";
      }
      program { name: "units-hidden";
         signal: "elm,state,units,hidden"; source: "elm";
         action:  STATE_SET "hidden" 0.0;
         target: "elm.text.status";
      }
      program { name: "text-visible";
         signal: "elm,state,text,visible"; source: "elm";
         script {
            new m = get_int(slmode);
            m |= LABEL; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "text-hidden";
         signal: "elm,state,text,hidden"; source: "elm";
         script {
            new m = get_int(slmode);
            m &= ~LABEL; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "icon-visible";
         signal: "elm,state,icon,visible"; source: "elm";
         script {
            new m = get_int(slmode);
            m |= ICON; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "icon-hidden";
         signal: "elm,state,icon,hidden"; source: "elm";
         script {
            new m = get_int(slmode);
            m &= ~ICON; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "state-disabled";
         signal: "elm,state,disabled"; source: "elm";
         script {
            new m = get_int(slmode);
            m |= DISABLE; set_int(slmode, m);
            eval_mode(m);
         }
      }
      program { name: "state-enabled";
         signal: "elm,state,enabled"; source: "elm";
         script {
            new m = get_int(slmode);
            m &= ~DISABLE; set_int(slmode, m);
            eval_mode(m);
         }
      }
   }
#undef ICON
#undef LABEL
#undef DISABLE
}

group { name: "elm/progressbar/horizontal/bare";
   parts {
      part { name: "elm.swallow.content"; type: SWALLOW;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 0 0;
            max: 0 0;
            visible: 0;
         }
      }
      part { name: "pulse_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
            visible: 0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "fract_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      part { name: "bg"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            min: 10 5;
            max: -1 5;
            color_class: "/bg/normal/progress/base";
         }
      }
      part { name: "elm.swallow.bar"; type: SWALLOW; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "bg";
         }
      }
      part { name: "elm.cur.progressbar"; mouse_events: 0; type: SPACER;
         dragable.confine: "elm.swallow.bar";
         dragable.x: 1 1 1;
         dragable.y: 0 0 0;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 1 1;
            max: 1 9999;
            rel.to: "elm.swallow.bar";
         }
      }
      part { name: "barend"; type: SPACER;
         description { state: "default" 0.0;
            fixed: 1 0;
            max: 1 9999;
            rel1.to_x: "elm.cur.progressbar";
            rel2.to_x: "elm.cur.progressbar";
            align: 1.0 0.5;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            align: 0.0 0.5;
         }
      }
      part { name: "bar"; type: RECT;
         clip_to: "fract_clip";
         description { state: "default" 0.0;
            rel1.to: "bg";
            rel2.to_x: "barend";
            rel2.to_y: "bg";
            color_class: "/fg/normal/progress/bar";
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            rel1.to_x: "barend";
            rel2.to_x: "bg";
         }
      }
      part { name: "pulse"; type: RECT;
         clip_to: "pulse_clip";
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 5 5;
            max: 5 9999;
            rel.to: "elm.swallow.bar";
            align: 0.0 0.5;
            color_class: "/fg/normal/progress/pulse";
         }
         description { state: "end" 0.0;
            inherit: "default" 0.0;
            align: 1.0 0.5;
         }
      }
   }
   programs {
      program { name: "inverted-on";
         signal: "elm,state,inverted,on"; source: "elm";
         action:  STATE_SET "inv" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "inverted-off";
         signal: "elm,state,inverted,off"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "pulse-mode1";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "fract_clip";
      }
      program { name: "pulse-start";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "pulse_clip";
         target: "fract_clip";
         after: "pulse0";
      }
      program { name: "pulse0";
         action:  STATE_SET "end" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse1";
      }
      program { name: "pulse1";
         action:  STATE_SET "default" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse0";
      }
      program { name: "elmpulse-stop";
         signal: "elm,state,pulse,stop"; source: "elm";
         action: ACTION_STOP;
         target: "pulse0";
         target: "pulse1";
         after: "pulse-stop";
      }
      program { name: "pulse-stop";
         action:  STATE_SET "default" 0.0;
         target: "pulse_clip";
      }
   }
}

group { name: "elm/progressbar/horizontal/hidden_bare";
   inherit: "elm/progressbar/horizontal/bare";
   parts {
      part { name: "bg";
         description { state: "default" 0.0;
            color: 0 0 0 0; // no cc
         }
      }
   }
}

group { name: "elm/progressbar/vertical/bare";
   parts {
      part { name: "elm.swallow.content"; type: SWALLOW;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 0 0;
            max: 0 0;
            visible: 0;
         }
      }
      part { name: "pulse_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
            visible: 0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "fract_clip"; type: RECT;
         description { state: "default" 0.0;
            rel1.relative: -2.0 -2.0;
            rel2.relative: 3.0 3.0;
         }
         description { state: "pulse" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      part { name: "bg"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            min: 5 10;
            max: 5 -1;
            color_class: "/bg/normal/progress/base";
         }
      }
      part { name: "elm.swallow.bar"; type: SWALLOW; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "bg";
         }
      }
      part { name: "elm.cur.progressbar"; mouse_events: 0; type: SPACER;
         dragable.confine: "elm.swallow.bar";
         dragable.x: 0 0 0;
         dragable.y: 1 1 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 1 1;
            max: 9999 1;
            rel.to: "elm.swallow.bar";
         }
      }
      part { name: "barend"; type: SPACER;
         description { state: "default" 0.0;
            fixed: 0 1;
            max: 9999 1;
            rel1.to_y: "elm.cur.progressbar";
            rel2.to_y: "elm.cur.progressbar";
            align: 0.5 1.0;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            align: 0.5 0.0;
         }
      }
      part { name: "bar"; type: RECT;
         scale: 1;
         clip_to: "fract_clip";
         description { state: "default" 0.0;
            rel1.to: "bg";
            rel2.to_y: "barend";
            rel2.to_x: "bg";
            color_class: "/fg/normal/progress/bar";
            offscale;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            rel1.to_y: "barend";
            rel2.to_y: "bg";
         }
      }
      part { name: "pulse"; type: RECT;
         clip_to: "pulse_clip";
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 5 10;
            max: 9999 10;
            rel.to: "elm.swallow.bar";
            align: 0.5 0.0;
            color_class: "/fg/normal/progress/pulse";
         }
         description { state: "end" 0.0;
            inherit: "default" 0.0;
            align: 0.5 1.0;
         }
      }
   }
   programs {
      program { name: "inverted-on";
         signal: "elm,state,inverted,on"; source: "elm";
         action:  STATE_SET "inv" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "inverted-off";
         signal: "elm,state,inverted,off"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "bar";
         target: "barend";
      }
      program { name: "pulse-mode1";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "fract_clip";
      }
      program { name: "pulse-start";
         signal: "elm,state,pulse,start"; source: "elm";
         action:  STATE_SET "pulse" 0.0;
         target: "pulse_clip";
         target: "fract_clip";
         after: "pulse0";
      }
      program { name: "pulse0";
         action:  STATE_SET "end" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse1";
      }
      program { name: "pulse1";
         action:  STATE_SET "default" 0.0;
         transition: SINUSOIDAL 0.8;
         target: "pulse";
         after: "pulse0";
      }
      program { name: "elmpulse-stop";
         signal: "elm,state,pulse,stop"; source: "elm";
         action: ACTION_STOP;
         target: "pulse0";
         target: "pulse1";
         after: "pulse-stop";
      }
      program { name: "pulse-stop";
         action:  STATE_SET "default" 0.0;
         target: "pulse_clip";
      }
   }
}

group { name: "elm/progressbar/vertical/hidden_bare";
   inherit: "elm/progressbar/vertical/bare";
   parts {
      part { name: "bg";
         description { state: "default" 0.0;
            color: 0 0 0 0; // no cc
         }
      }
   }
}

group { name: "elm/progressbar/horizontal/hidden_wheel";
   alias: "elm/progressbar/vertical/hidden_wheel";
   IMAGE_RING("ringa", 160)
   IMAGE_RING("ringb", 160)
   IMAGE_RING("ringc", 160)
   parts {
      part { name: "elm.swallow.bar" ; type: SWALLOW; mouse_events: 0;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 0 0;
            max: 0 0;
            visible: 0;
         }
      }
      part { name: "elm.swallow.content"; type: SWALLOW;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 0 0;
            max: 0 0;
            visible: 0;
         }
      }
      BUSY("base", "elm,state,pulse,start", "elm", "elm,state,pulse,stop", "elm")
      part { name: "base"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            color: 0 0 0 0; // no cc
            rel1.offset: 4 4;
            rel2.offset: -5 -5;
            min: 40 40;
            max: 40 40;
            offscale;
         }
      }
   }
}

group { name: "elm/progressbar/horizontal/wheel";
   inherit: "elm/progressbar/horizontal/hidden_wheel";
   alias: "elm/progressbar/vertical/wheel";
   images.image: "speaker_vol.png" COMP;
   parts {
      part { name: "bg"; nomouse;
         insert_before: "base";
         description { state: "default" 0.0;
            image.normal: "speaker_vol.png";
            rel.to:"base";
            color_class: "/bg/normal/progress/base/wheel";
         }
         description { state: "hidden" 0.0;
            inherit;
            color: 255 255 255 0; // no cc
            visible: 0;
         }
      }
      program { signal: "elm,state,pulse,start"; source: "elm";
         action: STATE_SET "hidden" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "bg";
      }
      program { signal: "elm,state,pulse,stop"; source: "elm";
         action: STATE_SET "default" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "bg";
      }
   }
}

group { name: "elm/progressbar/horizontal/bar";
   alias: "elm/progressbar/horizontal/fileselector/default";
   set { name: "spinner";
      image { image: "spinner-32.png" COMP; size: 17 45 9999 9999; }
      image { image: "spinner-16.png" COMP; size:  9 23   16   44; }
      image { image: "spinner-8.png"  COMP; size:  0  0    8   22; }
   }
   parts {
      part { name: "elm.swallow.bar" ; type: SWALLOW; mouse_events: 0;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 0 0;
            max: 0 0;
            visible: 0;
         }
      }
      part { name: "elm.swallow.content"; type: SWALLOW;
         description { state: "default" 0.0;
            fixed: 1 1;
            min: 0 0;
            max: 0 0;
            visible: 0;
         }
      }
      part { name: "spin1"; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "spinner";
            color_class: "/fg/normal/progress/spin";
            rel1.relative: 0.0 0.0;
            rel2.relative: 0.2 1.0;
            rel1.to: "base";
            rel2.to: "base";
            min: 8 22;
            max: 8 22;
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "spin1";
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 360;
         }
      }
      part { name: "spin2"; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "spinner";
            color_class: "/fg/normal/progress/spin";
            rel1.relative: 0.2 0.0;
            rel2.relative: 0.4 1.0;
            rel1.to: "base";
            rel2.to: "base";
            min: 8 22;
            max: 8 22;
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "spin2";
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 360;
         }
      }
      part { name: "spin3"; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "spinner";
            color_class: "/fg/normal/progress/spin";
            rel1.relative: 0.4 0.0;
            rel2.relative: 0.6 1.0;
            rel1.to: "base";
            rel2.to: "base";
            min: 8 22;
            max: 8 22;
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "spin3";
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 360;
         }
      }
      part { name: "spin4"; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "spinner";
            color_class: "/fg/normal/progress/spin";
            rel1.relative: 0.6 0.0;
            rel2.relative: 0.8 1.0;
            rel1.to: "base";
            rel2.to: "base";
            min: 8 22;
            max: 8 22;
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "spin4";
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 360;
         }
      }
      part { name: "spin5"; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "spinner";
            color_class: "/fg/normal/progress/spin";
            rel1.relative: 0.8 0.0;
            rel2.relative: 1.0 1.0;
            rel1.to: "base";
            rel2.to: "base";
            min: 8 22;
            max: 8 22;
            map.on: 1;
            map.smooth: 1;
            map.rotation.center: "spin5";
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 360;
         }
      }
      part { name: "base"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            color: 0 0 0 0; // no cc
            rel1.offset: 4 4;
            rel2.offset: -5 -5;
            min: 100 20;
            max: 100 20;
            offscale;
         }
      }
   }
   programs {
      program { name: "spin-1";
         in: 0.0 0.0;
         signal: "elm,state,pulse,start"; source: "elm";
         action: SIGNAL_EMIT "spin1" "";
         after: "spin-2";
      }
      program { name: "spin-2";
         in: 0.2 0.0;
         action: SIGNAL_EMIT "spin2" "";
         after: "spin-3";
      }
      program { name: "spin-3";
         in: 0.2 0.0;
         action: SIGNAL_EMIT "spin3" "";
         after: "spin-4";
      }
      program { name: "spin-4";
         in: 0.2 0.0;
         action: SIGNAL_EMIT "spin4" "";
         after: "spin-5";
      }
      program { name: "spin-5";
         in: 0.2 0.0;
         action: SIGNAL_EMIT "spin5" "";
      }
      program { name: "spin1.1";
         signal: "spin1"; source: "";
         action: STATE_SET "end" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "spin1";
         after: "spin1.2";
      }
      program { name: "spin1.2";
         action: STATE_SET "default" 0.0;
         target: "spin1";
         after: "spin1.1";
      }
      program { name: "spin2.1";
         signal: "spin2"; source: "";
         action: STATE_SET "end" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "spin2";
         after: "spin2.2";
      }
      program { name: "spin2.2";
         action: STATE_SET "default" 0.0;
         target: "spin2";
         after: "spin2.1";
      }
      program { name: "spin3.1";
         signal: "spin3"; source: "";
         action: STATE_SET "end" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "spin3";
         after: "spin3.2";
      }
      program { name: "spin3.2";
         action: STATE_SET "default" 0.0;
         target: "spin3";
         after: "spin3.1";
      }
      program { name: "spin4.1";
         signal: "spin4"; source: "";
         action: STATE_SET "end" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "spin4";
         after: "spin4.2";
      }
      program { name: "spin4.2";
         action: STATE_SET "default" 0.0;
         target: "spin4";
         after: "spin4.1";
      }
      program { name: "spin5.1";
         signal: "spin5"; source: "";
         action: STATE_SET "end" 0.0;
         transition: SINUSOIDAL 1.0;
         target: "spin5";
         after: "spin5.2";
      }
      program { name: "spin5.2";
         action: STATE_SET "default" 0.0;
         target: "spin5";
         after: "spin5.1";
      }
      program { signal: "elm,state,pulse,stop"; source: "elm";
         action: ACTION_STOP;
         target: "spin-1";
         target: "spin-2";
         target: "spin-3";
         target: "spin-4";
         target: "spin-5";
         after: "stop2";
      }
      program { name: "stop2";
         action: STATE_SET "default" 0.0;
         transition: SINUSOIDAL 1.0 CURRENT;
         target: "spin1";
         target: "spin2";
         target: "spin3";
         target: "spin4";
         target: "spin5";
      }
   }
}

group { name: "elm/progressbar/vertical/bar";
   inherit: "elm/progressbar/horizontal/bar";
   parts {
      part { name: "spin1";
         description { state: "default" 0.0;
            rel1.relative: 0.0 0.0;
            rel2.relative: 1.0 0.2;
            map.rotation.z: 90;
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 450;
         }
      }
      part { name: "spin2";
         description { state: "default" 0.0;
            rel1.relative: 0.0 0.2;
            rel2.relative: 1.0 0.4;
            map.rotation.z: 90;
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 450;
         }
      }
      part { name: "spin3";
         description { state: "default" 0.0;
            rel1.relative: 0.0 0.4;
            rel2.relative: 1.0 0.6;
            map.rotation.z: 90;
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 450;
         }
      }
      part { name: "spin4";
         description { state: "default" 0.0;
            rel1.relative: 0.0 0.6;
            rel2.relative: 1.0 0.8;
            map.rotation.z: 90;
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 450;
         }
      }
      part { name: "spin5";
         description { state: "default" 0.0;
            rel1.relative: 0.0 0.8;
            rel2.relative: 1.0 1.0;
            map.rotation.z: 90;
         }
         description { state: "end" 0.0;
            inherit;
            map.rotation.z: 450;
         }
      }
      part { name: "base";
         description { state: "default" 0.0;
            min: 20 100;
            max: 20 100;
         }
      }
   }
}

group { name: "elm/progressbar/horizontal/double";
   inherit: "elm/progressbar/horizontal/default";
   parts {
      part { name: "elm.cur.progressbar1"; mouse_events: 0; type: SPACER;
         insert_after: "bg";
         scale: 1;
         dragable.confine: "elm.swallow.bar";
         dragable.x: 1 1 1;
         dragable.y: 0 0 0;
         description { state: "default" 0.0;
            fixed: 1 0;
            min: 1 1;
            max: 1 9999;
            rel.to: "elm.swallow.bar";
         }
      }
      part { name: "barend1"; type: SPACER;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 1 0;
            max: 1 9999;
            rel1.to_x: "elm.cur.progressbar1";
            rel2.to_x: "elm.cur.progressbar1";
            align: 1.0 0.5;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            align: 0.0 0.5;
         }
      }
      part { name: "bar1"; type: RECT;
         scale: 1;
         insert_before: "bar";
         clip_to: "fract_clip";
         description { state: "default" 0.0;
            rel1.to: "bg";
            rel2.to_x: "barend1";
            rel2.to_y: "bg";
            color_class: "/fg/normal/progress/bar1";
            offscale;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            rel1.to_x: "barend1";
            rel2.to_x: "bg";
         }
      }
   }
   programs {
      program { name: "inverted-on";
         signal: "elm,state,inverted,on"; source: "elm";
         action:  STATE_SET "inv" 0.0;
         target: "bar";
         target: "bar1";
         target: "barend";
         target: "barend1";
      }
      program
       { name: "inverted-off";
         signal: "elm,state,inverted,off"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "bar";
         target: "bar1";
         target: "barend";
         target: "barend1";
      }
   }
}

group { name: "elm/progressbar/vertical/double";
   inherit: "elm/progressbar/vertical/default";
   parts {
      part { name: "elm.cur.progressbar1"; mouse_events: 0; type: SPACER;
         insert_after: "bg";
         scale: 1;
         dragable.confine: "elm.swallow.bar";
         dragable.x: 0 0 0;
         dragable.y: 1 1 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            max: 1 9999;
            rel.to: "elm.swallow.bar";
         }
      }
      part { name: "barend1"; type: SPACER;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            max: 1 9999;
            rel1.to_y: "elm.cur.progressbar1";
            rel2.to_y: "elm.cur.progressbar1";
            align: 0.5 1.0;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            align: 0.5 0.0;
         }
      }
      part { name: "bar1"; type: RECT;
         scale: 1;
         insert_after: "barend";
         clip_to: "fract_clip";
         description { state: "default" 0.0;
            rel1.to: "bg";
            rel2.to_y: "barend1";
            rel2.to_x: "bg";
            color_class: "/fg/normal/progress/bar1";
            offscale;
         }
         description { state: "inv" 0.0;
            inherit: "default" 0.0;
            rel1.to_y: "barend1";
            rel2.to_y: "bg";
         }
      }
   }
   programs {
      program { name: "inverted-on";
         signal: "elm,state,inverted,on"; source: "elm";
         action:  STATE_SET "inv" 0.0;
         target: "bar";
         target: "bar1";
         target: "barend";
         target: "barend1";
      }
      program { name: "inverted-off";
         signal: "elm,state,inverted,off"; source: "elm";
         action:  STATE_SET "default" 0.0;
         target: "bar";
         target: "bar1";
         target: "barend";
         target: "barend1";
      }
   }
}
